***************************************
*          @@  FLEX 3 @@              *                  
*                                     *
*   ------ >> Chapitre 19 << ------   *
*                                     *
***************************************


<?xml version="1.0" encoding="utf-8"?>

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" height="782">
	
<mx:HTML id="composantHTML x="10" y="40" width="608" height="502"
	    location="http://www.google.fr" />

</mx:WindowedApplication>
<?xml version="1.0" encoding="utf-8"?>

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="368" height="310" horizontalScrollPolicy="off" verticalScrollPolicy="off" usePreloader="true">
	
	<mx:WebService
	    id = "serviceCAC40" 
	    wsdl="http://www.webservicex.net/stockquote.asmx?WSDL" 
	    showBusyCursor="true">
	
	    <mx:operation name="GetQuote" resultFormat="object" fault="resultatKO(event)" result="resultatOK(event)">
	
	    </mx:operation>
	
	</mx:WebService>
	
	
	<mx:Script>
	    <![CDATA[
	
	        import mx.controls.Alert;
	        import mx.rpc.events.ResultEvent;
	        import mx.rpc.events.FaultEvent;
	
	        public function resultatKO(e:FaultEvent):void
	        {
	            Alert.show("Erreur "+e.fault.faultString)
	        }
	
	        public function resultatOK(e:ResultEvent):void
	        {
	            var resultat:XML = new XML(e.result)
	            txt_entreprise.text = resultat.Stock[0].Name;
	            txt_date.text = resultat.Stock[0].Date;
	            txt_heure.text = resultat.Stock[0].Time;
	            txt_quotation.text = resultat.Stock[0].Last;
	            txt_evolution.text = resultat.Stock[0].Earns;
	            txt_variation.text = resultat.Stock[0].AnnRange;
		        }
	
	        public function invoquerService():void
	        {
	            serviceCAC40.GetQuote("CAC 40");
	        }
	
	    ]]>
	</mx:Script>
	
		<mx:Button x="10" y="10" label="Invoquer le service" width="347" click="invoquerService()"/>
	<mx:Panel x="10" y="40" width="347" height="254" layout="absolute" title="Quotation">
	    <mx:Form x="10" y="10" width="307" height="199" horizontalScrollPolicy="off" verticalScrollPolicy="off">
	        <mx:FormItem label="Entreprise :">
	            <mx:TextInput width="150" id="txt_entreprise" editable="false"/>
	        </mx:FormItem>
	        <mx:FormItem label="Date :">
	            <mx:TextInput width="150" id="txt_date" editable="false"/>
	        </mx:FormItem>
	        <mx:FormItem label="Heure :">
	            <mx:TextInput width="150" id="txt_heure" editable="false"/>
	        </mx:FormItem>
	        <mx:FormItem label="Quotation :">
	            <mx:TextInput width="150" id="txt_quotation" editable="false"/>
	        </mx:FormItem>
	        <mx:FormItem label="Gain/Perte :">
	            <mx:TextInput width="150" id="txt_evolution" editable="false"/>
	        </mx:FormItem>
	        <mx:FormItem label="Variation annuelle :">
	            <mx:TextInput width="150" id="txt_variation" editable="false"/>
	        </mx:FormItem>
	    </mx:Form>
	</mx:Panel>
	
</mx:WindowedApplication>
		import flash.data.SQLResult; 
		import flash.filesystem.File;
		import flash.data.SQLStatement;
		import flash.data.SQLConnection;

		
		
		
		public function utilisationSQLite():void{
			
			//Cration du fichier de bases de donnes sur le disque dur C
			var fichier:File = new File("C:/baseDeDonnees.db");

		    //Cration dune nouvelle connexion au moteur de base de donnes
			var sqlConnection:SQLConnection= new SQLConnection();
			
			//Ouverture du fichier de la base de donnes
			sqlConnection.open(fichier);
			
			//Cration dune nouvelle requte
			var requete:SQLStatement = new SQLStatement();
			
			//Prcision sur la connexion devant tre utilise pour lexcution de la requte
			requete.sqlConnection = sqlConnection;
			
			//Cration de la requte  laide du langage SQL
			requete.text = "CREATE TABLE tb_test (id INTEGER PRIMARY KEY AUTOINCREMENT )";
			
			//Excution de la requte
			requete.execute();
			
		}
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >

        <mx:Panel x="10" y="10" width="430" height="375" layout="absolute" title="Carnet d'adresses" id="pan_carnet"> 
                
                
                <!-- TABLEAU !--> 
                <mx:DataGrid id="dgContacts" x="10" y="10" width="390"> 
                        <mx:columns> 
                                <mx:DataGridColumn headerText="Id" dataField="col0" width="30"/> 
                                <mx:DataGridColumn headerText="Prnom" dataField="col1"/> 
                                <mx:DataGridColumn headerText="Nom" dataField="col2"/> 
                        </mx:columns> 
                </mx:DataGrid> 
                
                

                <!-- FORMULAIRE !--> 
                <mx:Form x="10" y="177" width="390" height="107" verticalScrollPolicy="off" horizontalScrollPolicy="off">

                        <mx:FormItem label="Id"> 
                                <mx:TextInput id="txt_id" width="52" editable="false" enabled="false"/> 
                        </mx:FormItem> 
                        <mx:FormItem label="Prnom : "> 
                                <mx:TextInput id="txt_prenom"/> 
                        </mx:FormItem> 
                        <mx:FormItem label="Nom :"> 
                                <mx:TextInput id="txt_nom"/> 
                        </mx:FormItem> 
                </mx:Form> 
                
                
                <!-- BOUTONS !--> 
                <mx:Button id="btn_ajouter" x="330" y="297" label="Ajouter" /> 
                <mx:Button id="btn_modifier"  x="169" y="297" label="Modifier" /> 
                <mx:Button id="btn_supprimer" x="73.5" y="297" label="Supprimer" /> 
                <mx:Button x="251" y="297" label="Annuler" id="btn_annuler" /> 



        </mx:Panel> 
        


</mx:WindowedApplication>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initialisationIHM()" >

<mx:Script>
	<![CDATA[
	
		
		
		
		public function initialisationIHM():void
		{
			txt_id.text = "";
			txt_nom.text="";
			txt_prenom.text="";
			btn_ajouter.enabled = true;
			btn_modifier.enabled = false;
			btn_supprimer.enabled = false;
			btn_annuler.enabled = false;
		}
		
		
		public function modifiationSuppressionIHM():void{
			btn_ajouter.enabled = false;
			btn_modifier.enabled = true;
			btn_supprimer.enabled = true;
			btn_annuler.enabled = true;
		}

]]>
</mx :Script>

[]

</mx:WindowedApplication>

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initialisationIHM();SqliteConnection()">

<mx:Script>
	<![CDATA[


		import mx.events.ListEvent;

		//Importation des classes ncessaires  SQLite
		import flash.data.SQLResult; 
		import flash.filesystem.File;
		import flash.data.SQLStatement;
		import flash.data.SQLConnection;

			
		public function initialisationIHM():void
		{
			txt_id.text = "";
			txt_nom.text="";
			txt_prenom.text="";
			btn_ajouter.enabled = true;
			btn_modifier.enabled = false;
			btn_supprimer.enabled = false;
			btn_annuler.enabled = false;
		}
		
		
		public function modifiationSuppressionIHM():void{
			btn_ajouter.enabled = false;
			btn_modifier.enabled = true;
			btn_supprimer.enabled = true;
			btn_annuler.enabled = true;
		}
		
		

		   //Cration d'une variable de connexion qui sera utilise dans
	   //l'ensemble des procdures
	   public var sqlConnection:SQLConnection;

		
		


		//Connexion au moteur de base de donnes
		public function SqliteConnection():void
		{
			//Cration du fichier de donnes nomm "base_Contacts.db"
			var fichier:File = new File("C:/base_contacts.db");;
			var fichierExiste:Boolean = fichier.exists;
			sqlConnection = new SQLConnection();
			sqlConnection.open(fichier);
			
			//Si le fichier nexiste pas, on cre la table charge de contenir les enregistrements
			if (!fichierExiste)
			{
				creationTable();
			}
			else
			{
			//Sinon on liste des contacts
				listerContacts();
			}
		}
		
		
		
		
		//Script de cration de la table tb_contact charge de contenir les contacts du carnet dadresses
		private function creationTable():void
		{
			var stmt:SQLStatement = new SQLStatement();
			stmt.sqlConnection = sqlConnection;
			stmt.text = "CREATE TABLE tb_contact (id INTEGER PRIMARY KEY AUTOINCREMENT , prenom longvarchar, nom longvarchar)";			stmt.execute();
		}		


		
		
		
		//Listing des contacts
		[Bindable]
		public var tableauContacts:Array = new Array();
		
		public function listerContacts():void
		{
			var stmt:SQLStatement = new SQLStatement();
			stmt.sqlConnection = sqlConnection;
			stmt.text = "SELECT * FROM tb_contact ORDER BY prenom ASC";
			stmt.execute();
			tableauContacts =  stmt.getResult().data;
		}
		
		
		
		
		
		//Ajout dun contact
		public function ajouterContact():void
		{
			var prenom:String = txt_prenom.text;
			var nom:String = txt_nom.text;
			var stmt:SQLStatement = new SQLStatement();
			stmt.sqlConnection = sqlConnection;
			stmt.text = "INSERT INTO tb_contact (prenom,nom) VALUES ('"+prenom+"','"+nom+"')";
			stmt.execute();
			listerContacts();
			initialisationIHM();
		}
		
		
	
				
		//Mise  jour dun contact
		private function miseAJourContact():void
		{
			var id:String = txt_id.text;
			var prenom:String = txt_prenom.text;
			var nom:String = txt_nom.text;
			var stmt:SQLStatement = new SQLStatement();
			stmt.sqlConnection = sqlConnection;
			stmt.text = "UPDATE tb_contact SET prenom ='"+prenom+"', nom = '"+nom+"' WHERE id ='"+id+"'" ;
			stmt.execute();

			//Mise  jour du tableau de donnes
			listerContacts();
			
			//Initialisation de linterface graphique
			initialisationIHM();
			
		}
		

		
	
		//Suppression dun contact
		public function supprimerContact():void
		{
			var id:String = txt_id.text;
			var stmt:SQLStatement = new SQLStatement();
			stmt.sqlConnection = sqlConnection;
			stmt.text = "delete from tb_contact WHERE id ='"+id+"'";
			stmt.execute();
			listerContacts();
			initialisationIHM();
		}
		
		
		
		
		
		//Affichage des donnes dun contact aprs lavoir slectionn dans le tableau
		public function afficherDonneesContact():void
		{
				txt_id.text = dgContacts.selectedItem.id;
				txt_prenom.text = dgContacts.selectedItem.prenom;
				txt_nom.text = dgContacts.selectedItem.nom;
				modifiationSuppressionIHM();
		}
		
		
		
	]]>
</mx:Script>	
	

        
<mx:Panel x="10" y="10" width="430" height="375" layout="absolute" title="Carnet d'adresses" id="pan_carnet"> 
                
                
                <!-- TABLEAU !--> 
                <mx:DataGrid id="dgContacts" x="10" y="10" width="390" dataProvider="{tableauContacts}" itemClick="afficherDonneesContact()"> 
                        <mx:columns> 
                                <mx:DataGridColumn headerText="Id" dataField="id" width="30"/> 
                                <mx:DataGridColumn headerText="Prnom" dataField="prenom"/> 
                                <mx:DataGridColumn headerText="Nom" dataField="nom"/> 
                        </mx:columns> 
                </mx:DataGrid> 
                
                

                <!-- FORMULAIRE !--> 
                <mx:Form x="10" y="177" width="390" height="107" verticalScrollPolicy="off" horizontalScrollPolicy="off">

                        <mx:FormItem label="Id"> 
                                <mx:TextInput id="txt_id" width="52" editable="false" enabled="false"/> 
                        </mx:FormItem> 
                        <mx:FormItem label="Prnom : "> 
                                <mx:TextInput id="txt_prenom"/> 
                        </mx:FormItem> 
                        <mx:FormItem label="Nom :"> 
                                <mx:TextInput id="txt_nom"/> 
                        </mx:FormItem> 
                </mx:Form> 
                
                
                <!-- BOUTONS !--> 
                <mx:Button id="btn_ajouter" x="330" y="297" label="Ajouter" click="ajouterContact()" /> 
                <mx:Button id="btn_modifier"  x="169" y="297" label="Modifier" click="miseAJourContact()" /> 
                <mx:Button id="btn_supprimer" x="73.5" y="297" label="Supprimer" click="supprimerContact()" /> 
                <mx:Button x="251" y="297" label="Annuler" id="btn_annuler" click="initialisationIHM()" /> 



        </mx:Panel>         


</mx:WindowedApplication>
